Skip to content

feat: customer wallets, paycodes, and envelope fix#18

Merged
GREENFONTS merged 7 commits into
mainfrom
dev
Jun 30, 2026
Merged

feat: customer wallets, paycodes, and envelope fix#18
GREENFONTS merged 7 commits into
mainfrom
dev

Conversation

@GREENFONTS

Copy link
Copy Markdown
Collaborator

Summary

  • Customer wallets (IMonnifyDisbursementsClient): CreateWalletAsync, GetWalletsAsync,
    GetCustomerWalletBalanceAsync, GetWalletTransactionsAsync. Sandbox revealed the balance
    endpoint uses accountNumber (not walletReference as the docs say).
  • Paycodes (IMonnifyCollectionsClient): CreatePaycodeAsync, GetPaycodesAsync,
    GetPaycodeAsync, CancelPaycodeAsync, GetUnmaskedPaycodeAsync. Sandbox revealed paycode
    endpoints omit requestSuccessful from their responses — required an envelope fix (see below).
  • Envelope fix: MonnifyResponseEnvelope.RequestSuccessful is now bool?. An absent field
    • a present body is treated as success (paycode case); an absent field + no body is still a
      gateway-level failure. Non-breaking internal change.

Test plan

  • 233 unit tests passing
  • dotnet format --verify-no-changes clean
  • dotnet build -c Release clean (0 warnings)
  • Integration: CustomerWallets_AgainstRealSandbox — 21 wallets in sandbox
  • Integration: PaycodeReadOperations_AgainstRealSandbox — 33 paycodes; authorize confirmed unmasked

Implements CreateWalletAsync, GetWalletsAsync, GetCustomerWalletBalanceAsync,
and GetWalletTransactionsAsync on IMonnifyDisbursementsClient. Sandbox testing
revealed the balance endpoint uses accountNumber (not walletReference as our
docs show). Includes 15 unit tests and one sandbox integration test covering
list, balance, and transactions.
Move [Unreleased] to the top (Keep a Changelog spec), add mandates and
release.yml fixes to [Unreleased], and expand the [0.2.0] entry with
the card-charging and release-automation details that were missing.
… to Unreleased

Pulls the auto-generated 0.3.0–0.5.0 sections from release-please--branches--main,
removes the stale buried [Unreleased] block (now covered by those sections), moves
[Unreleased] to the top with only the wallet feature that release-please hasn't
picked up yet. Reverts version.json to 0.1-alpha since release-please owns
versioning via .release-please-manifest.json.
Implements CreatePaycodeAsync, GetPaycodesAsync, GetPaycodeAsync,
CancelPaycodeAsync, and GetUnmaskedPaycodeAsync on IMonnifyCollectionsClient.

Sandbox testing surfaced two real discrepancies with the docs:
- The paycode endpoints omit 'requestSuccessful' from responses entirely.
  Fixed by making MonnifyResponseEnvelope.RequestSuccessful nullable and
  updating the failure check in MonnifyHttpClientBase to treat an absent
  field + present body as a success, while still catching gateway errors
  (absent field + absent body) as failures.
- Cancelled paycodes include an undocumented 'cancelDate' field; added as
  nullable to the Paycode model.

CreatePaycodeAsync requires the paycode feature to be activated on the
merchant account (contact sales@monnify.com); sandbox returns an error
without it. The three read endpoints are sandbox-verified.
Rebases our [Unreleased] section on top of main's release-please-generated
0.5.0/0.4.0/0.3.0 entries and removes the stale buried [Unreleased] block
that was causing the merge conflict.
…ormat error

Nerdbank.GitVersioning 3.10.85's MSBuild task writes version variables to
$GITHUB_ENV using the old single-line format, which newer GitHub Actions
runners reject with "Invalid format '8'". Running dotnet/nbgv@master before
the build step lets NBGV set those variables via the runner's own file-command
API (heredoc format), so the MSBuild task sees they're already set and skips.
@GREENFONTS
GREENFONTS merged commit cafe7d2 into main Jun 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant